////////////////////////////
/** \file OzZinterface.h
 *	OzZ Controls Interface 
 *	Include this directly for a interface-plugin-project!\n
 *	Include OzZcontrols.h to your application-project instead.\n
 *	This file contains the functions an interface has to provide
 *	(c) Copyright by Daniel Bulla 2006
 *	\author Daniel 'OzZ' Bulla
 */
#pragma once

#ifdef PLUGIN_EXPORT
#define PLUGIN_API __declspec(dllexport)
#else
#define PLUGIN_API __declspec(dllimport)
#endif

namespace oc
{

class PLUGIN_API CInterface
{
public:
	TransData	m_TransData;
// --Callback-Functions:
	virtual void Init(const char* szInfo) = 0;							///< The function that initializes.
																		/**< \param szInfo can be a filename;
																		 *	When this function is called, the programm has to run on ints own!
																		 */
	// -Hooking:
	virtual void HandleHook(const Element* const pTo, HOOKID hook) = 0;	///< Plugin has to handle the event using the taken params
};

} //namespace oc

extern "C"
{
PLUGIN_API void* GetData(void);
PLUGIN_API void FreeData(void);
}